import pandas as pd

# 1.创建DataFrame
print("1.创建DataFrame")
df = pd.DataFrame(
    data={
        "姓名": ["张三", "李四", "王五"],
        "年龄": [28, 22, 32],
        "城市": ["上海", "北京", "深圳"],
    }
)
print(df)

# 2.数据选择
print("\n2.数据选择")
# -- 选择上述DataFrame中的“年龄”列。
print("-- 选择上述DataFrame中的“年龄”列。")
print(df["年龄"])
# -- 选择年龄大于25岁的行。
print("\n-- 选择年龄大于25岁的行。")
print(df[df["年龄"] > 25])

# 3.数据修改
print("\n3.数据修改")
# 在上述DataFrame中添加一个新的列“性别”，默认值都为’男’。
print("-- 在上述DataFrame中添加一个新的列“性别”，默认值都为’男’。")
df["性别"] = '男'
print(df)
# 将张三的年龄修改为30岁。
print("-- 将张三的年龄修改为30岁。")
df.loc[df["姓名"] == "张三", "年龄"] = 30
print(df)

# 4.数据删除
print("\n4.数据删除")
# 删除“城市”这一列。
print("-- 删除“城市”这一列。")
del df["城市"]
print(df)
# 删除年龄最大的行。
print("-- 删除年龄最大的行。")
df.drop(df.index[df["年龄"].idxmax()], inplace=True)
print(df)
"""
idxmax()：找到“年龄”列中最大值的索引
inplace=True：这意味着操作是在原DataFrame上进行的，而不是返回一个新的DataFrame
"""
# 保存为CSV文件。
print("\n.保存为CSV文件")
df.to_csv("my_data.csv", index=False)

# 5.文件读取与保存
print("\n6.文件读取与保存")
# 读取一个CSV文件到DataFrame。
df = pd.read_csv("my_data.csv")
print(df)
# 将上述DataFrame保存为Excel文件。
df.to_excel("my_data.xlsx", index=False)

# 6.处理缺失值
print("\n7.处理缺失值")
df3 = pd.DataFrame(
    data={
        '姓名': ['张三', '李四', None],
        '年龄': [None, 22, 32],
        '城市': ['上海', None, '深圳'],
    }
)
print(df3)
# -- 填充缺失值。
print("-- 填充缺失值。")



# 填充缺失值，年龄用平均年龄，城市用众数。
print("-- 填充缺失值，年龄用平均年龄，城市用众数。")
# print(type(df3['年龄']))
df3.fillna({'年龄': df3['年龄'].mean()}, inplace=True)
df3.fillna({'城市': df3['城市'].mode()[0]}, inplace=True)
print(df3)

# 8.数据排序
print("\n8.数据排序")
# 对DataFrame按年龄升序排序。
df4 = df3.sort_values(by='年龄', ascending=True)
print(df4)

# 9.数据分组与聚合
print("\n9.数据分组与聚合")
# 根据城市对数据进行分组，并计算每个城市的平均年龄。
df5 = df4.groupby('城市')['年龄'].mean()
print(df5)

# 10.数据透视表
print("\n10.数据透视表")
# 使用数据透视表计算每个城市的男女人数。
df6 = pd.pivot_table(df4,  values='姓名', index='城市', columns='年龄', aggfunc='count')
print(df6)


# 时间序列分析
# 给定以下时间戳和相应数据



